package metier;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestCollabo {
	
	/**
	 * Méthode de test du constructeur et des accesseurs en lecture de la classe Collaborateur
	 * On créé un collaborateur et on vérifie que les accesseurs permettent de récupérer la valeur 
	 * de chaque attribut
	 */
	@Test
	public void testGet() {
		Collaborateur monCollaborateur = new Collaborateur(5,"NOM","Prenom");
		assertEquals(monCollaborateur.getMatricule(),5);
		assertEquals(monCollaborateur.getNom(),"NOM");
		assertEquals(monCollaborateur.getPrenom(),"Prenom");
	}
	
	/**
	 * Méthode de test de setNom de la classe Collaborateur
	 * On vérifie que le Nom est bien modifié
	 */
	@Test
	public void testSetNom() {
		Collaborateur monCollaborateur = new Collaborateur(5,"NOM","Prenom");
		monCollaborateur.setNom("BIDULE");
		assertEquals(monCollaborateur.getNom(),"BIDULE");
	}
	
	/**
	 * Méthode de test de setPrenom de la classe Collaborateur
	 * On vérifie que le Prenom est bien modifié
	 */
	@Test
	public void testSetPrenom() {
		Collaborateur monCollaborateur = new Collaborateur(5,"NOM","Prenom");
		monCollaborateur.setPrenom("Machin");
		assertEquals(monCollaborateur.getPrenom(),"Machin");
	}	
	
	/**
	 * Méthode de test des accesseurs en écriture de la classe Collaborateur
	 * On vérifie qu'un collaborateur avec les memes attributs est bien "egale" a une autre,
	 * et on vérifie que le changement d'un seul paramètre rend cette egalité fausse
	 */
	@Test
	public void testEqualsCollaborateur() {
		Collaborateur  monCollaborateur = new Collaborateur(5, "Nom","Prenom");
		Collaborateur monAutreCollaborateur = new Collaborateur(5, "Nom","Prenom");
		assertTrue(monCollaborateur.equals(monAutreCollaborateur));
		Collaborateur monDeuxiemeCollaborateur = new Collaborateur(4, "N","P");
		assertFalse( monCollaborateur.equals(monDeuxiemeCollaborateur));
		
	}
	
	/**
	 * Méthode de test de la représentation en chaine des instances de la classe Collaborateur
	 * On vérifie que la chaine produite donne bien toutes les informations sur le collaborateur
	 */
	@Test
	public void testToString() {
		Collaborateur monCollaborateur = new Collaborateur(5,"NOM","Prenom");
		assertEquals(monCollaborateur.toString(),"5 NOM Prenom");
	}

	/**
	 * Méthode de test de la représentation en chaine des instances de la classe Colaborateur
	 * On vérifie que la chaine produite donne bien toutes les informations sur le collaborateur,
	 * avec le descriptif
	 */
	@Test
	public void testToStringDescriptif() {
		Collaborateur  monCollaborateur = new Collaborateur(5, "Nom","Prenom");
		String msg = "matricule : 5\n"+ "nom : Nom\n"+"prénom : Prenom" ;
		assertEquals( monCollaborateur.toStringDescriptif(), msg);
	}
}
